/*******************************************************
 *  说明 Summernote 富文本帮助类
 *  使用提醒：使用此js需要引入的前置文件：
 *  基于jquery,summernote.css,summernote-bs3.css,summernote.min.js,summernote-zh-CN.js
 * <p>Title: summernoteHelper.js</p>
 * <p>Description:富文本二次封装帮助类</p>
 * @author Joychen
 * @date 2018年9月5日 下午5:41:57
 * @version 1.0
 * *****************************************************/
;(function($){
    //根据文本内容创建对象
    $.fn.initSummernoteData = function(options){
        //1.0 当前DOM元素
        var This = this;
        //2.0 返回文本对象
        var $summernote;
        //3.0 默认配置
        var defaultOption={
            url:'',//远程加载路径
            context:'',//文本内容, 注意 当文本有内容时将忽略url远程加载
            height:null,//高度
            width:null,//宽度
            lang:'zh-CN',//设置中文，需要引入summernote-zh-CN.js
            disableDragAndDrop:true,//禁止拖拽
            shortcuts:false,//禁用快捷键
            focus:true,//初始化完成后 焦点设置到文本区
            fontSizes:['8','9','10','11','12','13','14','18','24','36'],//字体大小列表
            toolbar:[
                ['style', ['style']],
                ['font', ['bold','italic','underline','clear']],
                ['fontsize',['fontsize']],
                ['fontname', ['fontname']],
                ['color', ['color']],
                ['para', ['ul', 'ol', 'paragraph']],
                ['height', ['height']],
                ['table', ['table']],
                ['insert', ['link', 'picture', 'video']],
                ['view', ['fullscreen', 'codeview', 'help']]
            ],//菜单配置
            oninit: null,//初始化回调函数
            onfocus: null,//获得焦点时回调
            onblur: null,//失去焦点回调
            onenter: null,//回车键时回调函数
            onkeyup: null,//鼠标弹起时回调
            onkeydown: null,//按下鼠标时回调
            onsubmit: null,//提交时回调函数
            onImageUpload: null,//上传图片的回调函数
            onImageUploadError: null//上传图片出错
        }
        //3.1 将传递的配置赋值给默认配置
        if(options){
            for(p in options)
                if(defaultOption.hasOwnProperty(p))
                    defaultOption[p]=options[p];
        }
        //3.2 配置初始化富文本
        if(options && options.hasOwnProperty("isdefaultInit") && options.isdefaultInit)
            $summernote = $(This).summernote();
        else
            $summernote = $(This).summernote({
            height:defaultOption.height,
            width:defaultOption.width,
            lang:defaultOption.lang,
            disableDragAndDrop:defaultOption.disableDragAndDrop,
            shortcuts:defaultOption.shortcuts,
            focus:defaultOption.focus,
            fontSizes:defaultOption.fontSizes,
            toolbar:defaultOption.toolbar,
            oninit: null,//初始化回调函数
            onfocus: null,//获得焦点时回调
            onblur: null,//失去焦点回调
            onenter: null,//回车键时回调函数
            onkeyup: null,//鼠标弹起时回调
            onkeydown: null,//按下鼠标时回调
            onsubmit: null,//提交时回调函数
            onImageUpload: null,//上传图片的回调函数
            onImageUploadError: null//上传图片出错
        });
        //4.0 判断options是否传递富文本内容
        if(options && options.hasOwnProperty("context") && options["context"])
            $summernote.code(options["context"]);
        return $summernote;
    }
    //初始化富文本（获取 或者 远程加载文本内容，再调用初始化 context:初始化文本内容，url:初始化文本远程加载地址）
    //isdefaultInit:false //是否采用默认初始化
    $.fn.initSummernote = function(options){
        //1.0 当前DOM元素
        var This = this;
        //有内容直接忽略 url
        if(options && options.hasOwnProperty("context") && options.context)
            return This.initSummernoteData(options);
        else if(options && options.hasOwnProperty("url") && options.url){
            $.ajax({
                url:options.url,
                type:"post",
                async:false,
                dataType:"json",
                success:function(data){
                    if(data.bizStatus.code === "1000"){
                        options.context=data.data;
                        return This.initSummernoteData(options);
                    } else
                        layer.msg("数据获取异常："+data.msg,{icon:5});
                },
                error:function(){
                    layer.msg("请求异常！",{icon:5});
                    return null;
                }
            });
        } else
            return This.initSummernoteData(options);
    }
    //设置富文本值
    $.fn.setSummernote = function(str){
        return $(this).code(str);
    }
    //获取富文本值
    $.fn.getSummernote = function () {
        return $(this).code();
    }
})($);